package com.naiterui.ehp.bs.patient.prodocl;

import java.io.Serializable;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

/**
 * 用于标识客户端连接状态的协议
 * 客户端连接状态分为如下几种
 * 0：建立链接(登录)
 * 1：正常断开连接(登出，无PUSH)
 * 2：正常断开连接(切换应用到后台)
 * 3：连接意外中断(断网、断电)
 * 注：客户端登录后建立与MQTT的连接，然后订阅名称为自己用户ID的topic，并且设置遗嘱消息。
 * 遗嘱的topic名为 willDo
 * <P>File name : Connection.java </P>
 * <P>Author : zhouyanxin </P>
 * <P>Date : 2015年6月24日 </P>
 */
public class Connection implements IChecker, Serializable {

    /**
     * 字段或域定义：<code>serialVersionUID</code>
     */
    private static final long serialVersionUID = -3958528698746597899L;

    /**
     * LOGGER
     */
    private static final Logger LOGGER = LoggerFactory.getLogger(Connection.class);

    /**
     * 发送消息的用户ID
     */
    private Long i;

    /**
     * 0：建立链接(登录)
     * 1：正常断开连接(登出，无PUSH)
     * 2：正常断开连接(切换应用到后台)
     * 3：连接意外中断(断网、断电)
     * 注：客户端登录后建立与MQTT的连接，然后订阅名称为自己用户ID的topic，并且设置遗嘱消息。遗嘱的topic名为 willDo
     */
    private Integer t;

    /**
     * 属性信息检测
     * <P>Author : zhouyanxin </P>
     * <P>Date : 2015年6月24日 </P>
     * @return
     * @see com.naiterui.ehp.bs.im.network.protocl.IChecker#selfValidate()
     */
    @Override
    public boolean selfValidate() {
        if (this.i == null || this.i <= 0 || this.t == null || this.t <= 0) {
            LOGGER.error("connection message is incorrect, i is {}, t is {}", this.i, this.t);
            return false;
        } else {
            return true;
        }
    }

    /**
     * @return Long 取得域 i 的方法。
     */
    public Long getI() {
        return this.i;
    }

    /**
     * @param i 对域 i 的设置方法.
     */
    public void setI(Long i) {
        this.i = i;
    }

    /**
     * @return Integer 取得域 t 的方法。
     */
    public Integer getT() {
        return this.t;
    }

    /**
     * @param t 对域 t 的设置方法.
     */
    public void setT(Integer t) {
        this.t = t;
    }
}
